home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1997 / HAM Radio 1997.iso / vbxs / vbpid / readme.txt < prev    next >
Text File  |  1996-04-08  |  21KB  |  498 lines

  1. ----------------------------------------------------------------
  2.  
  3.                   PID Controller VBX Control  
  4.  
  5.               Copyright 1993 Northeast Data Corp.
  6.  
  7.                      All Rights Reserved
  8.  
  9. ----------------------------------------------------------------
  10.  
  11.  
  12.    Release 1.1
  13.  
  14.    June 1994
  15.  
  16.  
  17. This document describes the PID Controller Custom VBX Control. 
  18.  
  19.  
  20.                CONTENTS
  21.  
  22. 1. Product Description
  23. 2. Legal Information
  24. 3. Installation
  25. 4. Usage
  26. 5. Support
  27. 6. Appendix A - Process Overview
  28. 7. Appendix B - Example Application
  29.  
  30. 8. Release Notes
  31.  
  32. ----------------------------------------------------------------
  33. 1. Product Description
  34.  
  35. The PID Controller VBX Control is a Microsoft Windows DLL designed and 
  36. implemented in compliance with Microsoft standards for
  37. interfacing with Visual Basic.
  38.  
  39. The control functions like a standard Proportional-Integral-Derivative
  40. controller used in industrial plants. It can be used for modeling 
  41. chemical processing equipment and other kinds of plant installations that
  42. use closed-loop feedback control. See appendix A for a simple introduction
  43. to process control.
  44.  
  45. To the application programmer, the interface to the slider is similar
  46. to the other MS Windows controls, with a few special messages added for
  47. performing operations specific to the PID control.
  48.  
  49. Being a VBX control, the programmer can add the PID Control to the 
  50. tool palette in Visual Basic. This allows use of the control in Visual
  51. Basic forms. Since Visual C++ supports use of VBX controls, the slider
  52. control can also be used in the Visual C++ environment.
  53.  
  54. Use of the PID Controller in a finished VB or Visual C++ application 
  55. requires the PID Control DLL (pid.vbx) to be installed with the application.
  56. This is true of all custom controls written for MS Windows.
  57.  
  58. There are properties available that allow the programmer to control
  59. the behavior and appearance of the Control.
  60.  
  61. All communication between the PID Control and the application is 
  62. performed using the standard Windows message mechanism for controls. 
  63. Design of the PID Control message mechanism allows the application to
  64. continuously monitor the settings of the control.
  65.  
  66. -------------------------------------------------------------------
  67. 2. Legal Information
  68.  
  69. The purchaser of the PID Control is allowed to use it and
  70. distribute it in applications without paying any royalty, and without
  71. printing or displaying a copyright notice for the control. This only
  72. includes distribution of the PID Control DLL (PID.VBX). It does 
  73. not include distribution of documentation that comes with the 
  74. Control. 
  75.  
  76. The purchaser of the PID Control may distribute the control DLL with
  77. applications that are networked (multiple users accessing the DLL from
  78. a file server) without paying any license fees to Northeast Data Corp.
  79.  
  80.  
  81. -------------------------------------------------------------------
  82. 3. Installation
  83.  
  84. Create a "PID" directory on your hard disk and copy all files from
  85. the distribution disk to the directory. You should copy the pid.vbx
  86. file to your Windows\System directory.
  87.  
  88. Start Visual Basic or the Visual C++ App Studio applications and use
  89. the custom control installation function to install the pid.vbx
  90. control.
  91.  
  92.  
  93. -------------------------------------------------------------------
  94. 4. Usage
  95.  
  96.  
  97. PROPERTIES
  98. ----------
  99.  
  100.    Action    - Stop, Run, Reset. Reset causes all values stored in the
  101.                controller to be reset to their controller startup
  102.                settings. 
  103.  
  104.    BackColor - Sets the background color.
  105.  
  106.    DragIcon  - Name of the icon that will appear when the control is dragged.
  107.  
  108.    DragMode  - Normal or automatic.
  109.  
  110.    Gain      - The sensitivity of the controller. This value is multiplied
  111.                times the difference between the setpoint and measured value,
  112.                then divided by difference between the maximum and minimum
  113.                control values (the range of the controller). The value is
  114.                expressed as a percentage, so 100 will cause a 50% output
  115.                when the difference between measured value and setpoint
  116.                is 1 half of the span of the controller (100 degrees).
  117.   
  118.    Height    - Height of control.
  119.  
  120.    Index     - Index of control.
  121.  
  122.    Left      - Left position.
  123.    
  124.    Measured  - Position of the measured value arrow.
  125.  
  126.    Mode      - Manual or Automatic. If set to automatic, the controller
  127.                calculates and sets the output value based on the measured
  128.                value and setpoint. If set to manual, the controller does
  129.                not adjust the output, but allows you to set it manually.
  130.                Setting the mode to manual also allows you to write your
  131.                own algorithms for controlling the output based on the
  132.                measured value and setpoint.
  133.  
  134.    MVColor   - Color of the measured value arrow.
  135.  
  136.    MVTickColor - Color of the tick marks on the measured value scale.
  137.  
  138.    Name      - Standard property for the name of the control.
  139.  
  140.    OPColor   - Color of the output arrow.
  141.  
  142.    OPMode    - Normal or Reverse. In reverse mode the output is set
  143.                to 100% when the measured value is greater than the
  144.                setpoint. In normal mode, the output is zero when the
  145.                measured value is over the setpoint. This is useful for
  146.                controlled devices that work in opposite fashions. For
  147.                example, some pneumatic valves are closed at 100% output
  148.                and wide open at 0% output. Other valves are the opposite
  149.                of this.
  150.  
  151.    OPTickColor - Color of the tick marks on the output scale.
  152.  
  153.    Output    - Position of the output arrow on the output scale. This
  154.                can only be set if the Mode property is set to Manual.
  155.  
  156.    Poll      - Controller update period (in seconds). This value should
  157.                be set to something reasonable (a few seconds). Setting it
  158.                too low will cause the control to take a large amount of CPU
  159.                time.
  160.  
  161.    Preact    - This value determines how many minutes the controller
  162.                "looks ahead" to determine how the output should be adjusted.
  163.                The calculation is done by extrapolating from the previous
  164.                measured value to determine what the value will be at the
  165.                specified lead time. This setting affects the ability of 
  166.                the controller to respond ahead of time to rapid changes in
  167.                the measured value.
  168.  
  169.    Reset     - The number of times per minute that the normal output 
  170.                calculated based on the Gain is reapplied to the output.
  171.                This setting affects the ability of the controller to correct
  172.                for a continuous offset between the setpoint and measured
  173.                value. 
  174.  
  175.    SetPoint  - Current setpoint position. This must be a value between
  176.                or including the current minimum and maximum values of
  177.                the controller.
  178.  
  179.    SPColor   - Color of the setpoint arrow.
  180.  
  181.    SPMax     - Maximum control value. This must be greater than the
  182.                minimum value. This established the maximum value for
  183.                the setpoint and measured values.
  184.  
  185.    SPMin     - Minimum control value. This must be less than the maximum
  186.                value. This establishes the minimum value for the setpoint
  187.                and measured values of the controller.
  188.  
  189.    SPTickColor - Color of the tick marks on the setpoint scale.
  190.  
  191.    TabIndex  - Control tab order.
  192.  
  193.    TabStop   - If this is turned on (1 instead of 0), the PID controller can
  194.                be activated by tabbing to it with the TAB key.
  195.  
  196.    Tag       - Control tag.
  197.  
  198.    Top       - Top of control window.
  199.  
  200.    Visible   - Visible/Invisible attribute.
  201.  
  202.    Width     - Width of control.
  203.  
  204.    
  205. EVENTS
  206. ------
  207.  
  208. These events work the same way as for other VBX controls.
  209.  
  210.    DblClick 
  211.    DragDrop  
  212.    DragOver
  213.    GotFocus
  214.    KeyDown
  215.    KeyUp
  216.    LostFocus
  217.    Measured
  218.    Output
  219.    Setpoint
  220.  
  221. In order to update values in your application based on the current
  222. position of the PID control, you should handle the Output and Setpoint
  223. events. The measured value event is not usually needed, since it is
  224. your application that sets the measured value based on the controller
  225. output. The setpoint event will occur when the user drags the setpoint
  226. arrow in the controller. 
  227.  
  228.  
  229. -----------------------------------------------------------------------
  230. 5. Support
  231.  
  232.    Northeast Data Corp. can be contacted at 716-247-5934 (voice or FAX).
  233.    You may also leave messages at Compuserve ID 71321,3304.
  234.  
  235.  
  236.  
  237. -----------------------------------------------------------------------
  238. 6. APPENDIX A  - Process Control Overview
  239.  
  240. There are many books available on process control theory. You can find
  241. them at any good technical library. Process control is a complex field
  242. of study - far too broad to cover in detail in this document. The 
  243. following covers some of the basics to get you started. A lot can be
  244. learned just by "playing" with the PID VBX control. It is possible to 
  245. connect your PC to laboratory equipment through a special analog adapter
  246. and perform real process control, using the PID control in Visual Basic
  247. or Visual C++ to perform the control calculations and output.
  248.  
  249. Process control is divided into two broad categories; "Open Loop" and
  250. "Closed Loop". Open loop controllers send an output signal (air pressure
  251. or electrical) to a pneumatic valve or electronic solenoid. The level of
  252. the output signal is adjusted with no knowledge of conditions at the 
  253. point of control. For example, a steam valve could be set to 50% of it's
  254. travel. The kettle of water being heated is at some unknown temperature
  255. and heats up as steam is fed to it. The temperature of the water rises
  256. continuously to some point of equilibrium. No change occurs to the steam
  257. valve setting unless the operator manually adjusts the output to the valve.
  258. This type of control is manual.
  259.  
  260. Closed loop control is a technique for automatically adjusting valve or
  261. other component settings based on the measured value of the material being
  262. controlled. For example, placing a thermocouple in the kettle of water
  263. and feeding the measured temperature back to the controller allows the
  264. controller to determine a new setting for the steam valve.
  265.  
  266. In closed loop control, the tricky part is coming up with an algorithm
  267. that determines the best setting for the valve or other device based on
  268. the measured input. It's tricky because of the large number of physical
  269. characteristics of the plant that affect the behavior of the measured
  270. feedback signal and the signal going out to the valve. Various things 
  271. cause time delays in the sensing of input values and adjustment of 
  272. output devices. Since there are usually more complex things to control
  273. than a kettle of water, the nature of the fluid or whatever is being
  274. controlled various widely. For example, typical chemical reactions
  275. cause enormous perturbations in the stability of the system (the extreme
  276. case being an explosion). Modern control theory attempts to quantify
  277. all these factors and produce optimum control algorithms.
  278.  
  279.  
  280. PROPORTIONAL CONTROL
  281. ====================
  282.  
  283. The simplest form of closed-loop control is "Proportional". The output
  284. signal is determined by the difference between the setpoint and the
  285. measured value in relation to the range of the controller. A multiplier
  286. (called the "Gain") is used to determine the new output value. The output
  287. is calculated as:
  288.  
  289.       setpoint - measured value
  290.       ------------------------- * (gain/100)
  291.       max output - min output
  292.  
  293. A gain of 100% means, for example, a setpoint of 75 degrees and a current
  294. water temperature of 50 degrees results in an output of 25% (where the
  295. output ranges from zero to 100% of the valve range). A gain of 2 would
  296. cause an output of 50%. This assumes the span of the controller (range
  297. of measured value and setpoint) is 100.
  298.  
  299. This type of control is adequate for some systems. Industrial controls
  300. implement this type of control (as well as all those described in this
  301. document) by pneumatic elements using air pressure or by electrical
  302. components using electrical sensors and solenoids. The PID VBX control
  303. implements control by running a timer that periodically reads properties
  304. set by the application (the key one being the measured value). The
  305. timer period can be set using the "Poll" property.
  306.  
  307.  
  308. RESET CONTROL (Integral)
  309. =============
  310.  
  311. Then things get a little trickier. What if 25% output is not enough to
  312. heat the water (or whatever) above 50 degrees? The controller is now at
  313. equilibrium; no further changes in water temperature will occur. The system
  314. operates at a steady offset between the setpoint and the measured value.
  315. Usually, this is not quite what is desired. The operator can correct the
  316. condition by manually setting the setpoint to 100 degrees, hoping that the
  317. controller will settle down with an offset of 25 degrees, leaving the
  318. water temperature at the desired 75 degrees. Depending on the system
  319. behavior, this may not happen. The operator may have to "play" with 
  320. the setpoint to find the setting that works.
  321.  
  322. The next type of control operation attempts to correct this problem. It
  323. does, in effect, what the operator would have to do manually. That is,
  324. it resets the effective setpoint when it sees that the measured value
  325. does not come up to the setpoint over some period of time. This element
  326. of control operation is called, appropriately "Automatic Reset", or just
  327. "Reset". The numeric value for the reset is the number of times per 
  328. minute that the controller adds the output calculated from the simple
  329. gain to the current output value. The output is adjusted rather than
  330. the setpoint - the effect is the same, and is preferable to putting the
  331. setpoint to a location that looks strange to the operator.
  332.  
  333. The effect of reset is to, over time, eliminate the offset between the
  334. setpoint and the measured value. The disadvantage to this technique is
  335. that reset tends to desensify the controller. That is, once the setpoint
  336. has been reached, the reset may have driven the output so high that the
  337. measured value "overshoots" the setpoint. Also, if the controller is
  338. left in operation (doing calculations) while active components of the
  339. system are turned off, the reset component will build up a large output
  340. value. When the components are turned on, the controller massively
  341. overshoots the setpoint. For example, if a manual steam valve is turned
  342. off while the controller is running, reset will eventually drive the
  343. output to 100% because the measured value never comes up to the setpoint
  344. (no steam available). When the manual valve is opened, the reset component
  345. takes no effect until the measured value has reached the setpoint. By
  346. the time the controller has determined there is no continuing offset, the
  347. measured value has overshot the setpoint by a large value. This
  348. phenomenon is sometimes called "Reset Windup".
  349.  
  350. This problem can be overcome to some extent by providing a switch to
  351. turn the controller on and off. While the system is not being used, the
  352. controller is turned off. These prevents the reset component from building
  353. up incorrect output values. The VBX control contains an Action property for 
  354. turning the controller on and off and for resetting it, which zeroes out 
  355. all retained calculations.
  356.  
  357. Reset control action is also known as "Integral" control, since controller 
  358. output is determined by integrating offsets over a period of time.
  359.  
  360.  
  361. DERIVATIVE CONTROL  (Preact)
  362. ==================
  363.  
  364. Many systems have lengthy delays between the sensing of temperatures or other
  365. parameters and transmission of these to the controller. There can also be
  366. extensive delays in the transmission and use of output signals from the
  367. controller. The effect of these problems is that the new adjustment at the
  368. point of control is incorrect by the time it arrives. This problem is
  369. evident in all controls by observing a phenomenon known as "Cycling", where
  370. the measured value repeatedly overshoots and undershoots the setpoint. A
  371. controller operating in this condition is said to be "hunting". 
  372.  
  373. There are also process events that "surprise" the controller. A chemical
  374. reaction typically produces these at the time the chemicals begin to
  375. react. Sensitive proportional control can somewhat compensate for this
  376. problem, but Reset control tends to make things worse if the reaction
  377. occurs when the measured value is below the setpoint, since Reset will
  378. continue to boost the output until the measured value is above the setpoint.
  379.  
  380. Derivative control looks at the difference between the previous measured
  381. value and the current one. It calculates a counter-output to be applied 
  382. to the proportional output. In effect, it guesses what the next measured 
  383. value will be based on the slope (hence the term "Derivative") of the 
  384. measured value and generates an output to "get ahead" of the process.
  385.  
  386. Derivative control is also known as "Preact". The numeric value for the
  387. preact is the number of minutes to look ahead to calculate the output. For
  388. example:
  389.  
  390.    If the previous measured value was 45 degrees and occured 10 seconds ago
  391.  
  392.    If the current measured value was 50 degrees and the Preact value is .5
  393.  
  394. The rate of change in measured value is 30 degrees per minute.
  395. The preact value indicates we should use the measured value .5 minutes
  396. in the future. Based on the rate of change, the measured value will be 
  397. 65 degrees in .5 minutes ( 50 (current value) + 30 (deg/min ) / .5 (min) ).
  398.  
  399. The preact component will calculate an output based on 65 degrees, 
  400. whereas the proportional component will base its calculation on 50 degrees.
  401.  
  402. The outputs calculated by proportional, integral, and derivative components
  403. are added together to form the new output value.
  404.  
  405.  
  406. TUNING
  407. ======
  408.  
  409. The business of setting optimum values for Gain, Reset, and Preact is
  410. known as "Tuning" the controller. This is typically done through trial
  411. and error. Although there are many algorithms used for calculating these
  412. settings, many process systems are so complex that the trial-and-error
  413. technique is the most effective.
  414.  
  415. Controllers can become more complex by "cascading" them. In this 
  416. configuration, the output from one controller is used to set the setpoint
  417. of another controller. Two controllers cascaded is the norm, but there is
  418. no technical limit. Tuning these types of controllers is usually done by
  419. tuning the controller closest to the process (called the "slave") first,
  420. and then tuning the "master".
  421.  
  422.  
  423. ---------------------------------------------------------------------
  424. 7. APPENDIX B - Example Visual Basic Application
  425.  
  426. The application provided with the PID control is a simple example of
  427. controlling a kettle of water (or whatever). The application sets the
  428. measured value based on the output of the control and the current 
  429. temperature of the water.
  430.  
  431. Edit boxes let you play with the Gain, Reset, and Preact. Buttons let
  432. you stop, start, and reset the controller. 
  433.  
  434. Three graph controls are used to chart the setpoint, measured value, and
  435. output. 
  436.  
  437. The game here is to try your hand at tuning the controller. You can test
  438. your skill by making controller settings and adjustments to the setpoint.
  439. The goal is to tune the controller for optimum measured value control.
  440. You need to minimize cycling, offsets, and overshoots.
  441.  
  442. You can change the behavior of the system by modifying the algorithms
  443. for calculation of the measured value. You may want to add an "Explosion"
  444. button or something like that to give a sudden burst in measured value
  445. to see how your controller responds.
  446.  
  447. If you have better ideas for controlling a process, set the mode of the
  448. controller to "Manual" and write your own subroutine for calculating the
  449. output based on the measured value and setpoint. This, in effect, lets
  450. you design your own industrial controller. You can add all kinds of
  451. logic for dealing with special behavior of your process. For example,
  452. you may know that your chemical reaction "takes off" at exactly 14
  453. minutes after the temperature reaches a setpoint of 67 degrees. Your
  454. algorithm could make adjustments to setpoint, set the controller and
  455. let your algorithm "take over", or make adjustments to the gain, reset,
  456. and preact. This is pretty cool, since many industrial controllers
  457. don't have nearly this much flexibility.
  458.  
  459. It's also fun to hook up the MCI control and play wave files for special
  460. effects when certain things happen in the controlled process.
  461.  
  462.  
  463. Enjoy.
  464.  
  465.  
  466. ---------------------------------------------------------------------
  467. 8. Release Notes
  468.  
  469. Version 1.0    - August 1993
  470.  
  471.    - Initial release
  472.       
  473. Version 1.1    - June 1994
  474.  
  475.    - Corrected problem with foreground color in the DLL version.
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.